-- 功能：原子性初始化令牌（仅在不存在时设置并带过期时间）
-- 参数：KEYS[1]=令牌键，ARGV[1]=初始值，ARGV[2]=过期时间(秒)
local key = KEYS[1]
local initial = tonumber(ARGV[1])
local expire = tonumber(ARGV[2])

-- 使用 SET 命令原子性设置值并指定过期时间（仅在键不存在时）
local result = redis.call('SET', key, initial, 'NX', 'EX', expire)
if result == "OK" then
    return initial
else
    --如果已经有缓存了，重置一下时间
    redis.call('EXPIRE', key, expire)
    return tonumber(redis.call('GET', key))
end